<?php

namespace app\common\service;

class PdfOcrService
{

    public function ocrPdf($filePath ,$ip ="")
    {
        // 使用Imagick库读取PDF文件
        $url = $ip . '/api/image_to_ocr';
        // 构建边界字符串
        $boundary = '---------------------------' . md5(uniqid(time(), true));
        // 初始化 cURL 会话
        $ch = curl_init();
        // 设置 cURL 选项
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 获取返回的内容而不是输出

        // 构建 multipart/form-data 数据
        $dataString = "--{$boundary}\r\n";
        $dataString .= "Content-Disposition: form-data; name=\"file\"; filename=\"" . basename($filePath) . "\"\r\n";
        $dataString .= "Content-Type: application/octet-stream\r\n\r\n";
        $dataString .= file_get_contents($filePath) . "\r\n";
        $dataString .= "--{$boundary}--";

        // 设置 multipart/form-data 数据
        curl_setopt($ch, CURLOPT_POSTFIELDS, $dataString);

        // 设置 Content-Type 头部
        $headers = [
            'Content-Type: multipart/form-data; boundary=' . $boundary,
        ];
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

//        // 设置超时时间
//        curl_setopt($ch, CURLOPT_TIMEOUT, 600); // 设置超时时间为60秒
//
//        // 设置连接超时时间
//        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); // 设置连接超时时间为10秒

        // 执行 cURL 会话
        $response = curl_exec($ch);


        // 检查是否有错误发生
        if (curl_errno($ch)) {
            echo 'cURL error: ' . curl_error($ch);
        } else {
            // echo 'Server response: ' . $response;
        }

        // 关闭 cURL 会话
        curl_close($ch);


        return json_decode($response, true);

    }


}